﻿
using BLL;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace IgrMensageiros.UI
{
    public partial class UI_logon : Form
    {
        #region "Declarações"
        private static log4net.ILog log;
        private enum TipoMensagem {_UsuarioSenha = 1, _UsuarioInvalido = 2 }
        private string vMensagem = "";
        private const string PreencherCampos= "Preencher Todos os Campos!";
        private const string UsuarioInvalido = "Usuário ou Senha Inválidos!";
        #endregion

        public UI_logon()
        {
            InitializeComponent();

            log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            log4net.Config.XmlConfigurator.Configure();

            panel.Visible = false;
        }

        #region "Eventos"
        private void btnSair_Click(object sender, EventArgs e)
        {
            try
            {
                Close();
            }
            catch (Exception ex)
            {
                log.Error(ex);
                throw;
            }
        }

        private void btnEntrar_Click(object sender, EventArgs e)
        {
            bool vValidarCampos = true;
            bool vVerificarUsuario = true;
            try
            {
                if (!ValidarCampos())
                {
                    MsgUsuario((int)TipoMensagem._UsuarioSenha);
                    vValidarCampos = false;
                }
                else if (!VerificarUsuario())
                {
                    MsgUsuario((int)TipoMensagem._UsuarioInvalido);
                    vVerificarUsuario = false ;
                }

                if (vValidarCampos && vVerificarUsuario)
                {
                   UI_Principal principal = new UI_Principal(txtUsuario.Text);
                    principal.Show();
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                throw;
            }
            
        }
        #endregion

        #region "Métodos"
        private Boolean ValidarCampos()
        {
            bool retorno = false;
            if (!string.IsNullOrEmpty(txtUsuario.Text) && !string.IsNullOrEmpty(txtSenha.Text))
            {
                retorno = true;
                lblMensagem.Text = "";
                panel.Visible = false;
            }
            
            return retorno; 
        }

        private string MsgUsuario(int pTipoMensagem)
        {
            panel.Visible = true;
        
            switch (pTipoMensagem)
            {
                case(1):
                    vMensagem = PreencherCampos;
                    break;
                case(2):
                    vMensagem = UsuarioInvalido;
                    break;
            }
            return lblMensagem.Text = vMensagem;
        }

        private Boolean VerificarUsuario()
        {
            bool retorno = false;
           
            #if DEBUG
            if (txtUsuario.Text == "admin" && txtSenha.Text == "123")
            {
                retorno = true;
            }
            #endif

            //Fazer get do usuario e passar para o metodo descriptografar
            //Criptografia.Descriptografar();
            
            return retorno;
        }
        #endregion
    }
}
